package empleadoAdministrativo;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;

import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.SwingUtilities;

import misc.Logica;





/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class RegistrarPase_GUI extends javax.swing.JFrame {

	{
		//Set Look & Feel
		try {
			javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());
		} catch(Exception e) {
			e.printStackTrace();
		}
	}

	private JButton btnAceptar;
	private JButton btnCancelar;
	private JTextField txtAsunto;
	private JLabel lblDestino;
	private JComboBox cmbDestino;
	private JTable tblSolicitudes;
	private JScrollPane jScrollPane1;
	private JScrollPane jScrollPane2;
	private JLabel lblSolicitudes;
	private JLabel lblAsunto;
	private DefaultComboBoxModel modeloDestino;
	private DefaultTableModel modeloSolicitudes;
	private DefaultTableModel modeloTemp= new DefaultTableModel();
	private JTable tblTemp= new JTable();
	private Logica logica;
	private DefaultTableModel modelo;	
	Empleado_GUI padre;

	/**
	* Auto-generated main method to display this JFrame
	*/
	
	public RegistrarPase_GUI(Empleado_GUI padre,Logica logica) {
		super();
		this.logica=logica;
		this.padre=padre;
		initGUI();
		mostrarDestinos();
		
		
	}
	
	
	
	
	public void obtenerDestinos() {
		ResultSet rs = logica.listadoDestinos();
		
		
		try {
			while (rs.next())
			{
			   // Se crea un array que será una de las filas de la tabla. 
			   Object [] fila = new Object[3]; // Hay 2 columnas en la tabla

			   // Se rellena cada posición del array con una de las columnas de la tabla en base de datos.
			   for (int i=0;i<2;i++) fila[i] = rs.getObject(i+1); // El primer indice en rs es el 1, no el cero, por eso se suma 1.

			   // Se añade al modelo la fila completa.
			   modeloTemp.addRow(fila); 
			}
			tblTemp.setModel(modeloTemp);
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
       
	}
	
	
	private void mostrarDestinos() {
		obtenerDestinos();
		
		
		int filas = tblTemp.getRowCount();
		 
	        if (filas > 0) {
	            for (int i = 0; i <= filas-1; i++) {
	            	cmbDestino.addItem(modeloTemp.getValueAt(i,1).toString());
	            	
	            }
	        }
                    
                    	
		

		}
	
	
	
	
	
	
	public void mostrarSolicitudes() {
		ResultSet rs = logica.consultarSolicitudesPendientes();
		logica.limpiar(modeloSolicitudes);
		
		try {
			while (rs.next())
			{
			   // Se crea un array que será una de las filas de la tabla. 
			   Object [] fila = new Object[3]; // Hay 2 columnas en la tabla

			   // Se rellena cada posición del array con una de las columnas de la tabla en base de datos.
			   for (int i=0;i<3;i++)
			      fila[i] = rs.getObject(i+1); // El primer indice en rs es el 1, no el cero, por eso se suma 1.

			   // Se añade al modelo la fila completa.
			   modeloSolicitudes.addRow(fila); 
			}
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
       
	}
	
	
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
			getContentPane().setLayout(null);
			this.setTitle("Registrar Pase");
			{
				btnAceptar = new JButton();
				getContentPane().add(btnAceptar);
				btnAceptar.setText("Aceptar");
				btnAceptar.setBounds(33, 278, 124, 23);
				btnAceptar.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						btnAceptarActionPerformed(evt);
					}
				});
			}
			{
				btnCancelar = new JButton();
				getContentPane().add(btnCancelar);
				btnCancelar.setText("Cancelar");
				btnCancelar.setBounds(290, 278, 124, 23);
				btnCancelar.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						btnCancelarActionPerformed(evt);
					}
				});
			}
			{
				jScrollPane1 = new JScrollPane();
				getContentPane().add(jScrollPane1);
				jScrollPane1.setBounds(33, 41, 381, 88);
				{
					jScrollPane2 = new JScrollPane();
					jScrollPane1.setViewportView(jScrollPane2);
					jScrollPane2.setPreferredSize(new java.awt.Dimension(379, 84));
					{ tblSolicitudes = new JTable();
					jScrollPane2.setViewportView(tblSolicitudes);
					modeloSolicitudes = new DefaultTableModel();
					modeloSolicitudes.addColumn("Codigo Sol.");
					modeloSolicitudes.addColumn("Interesado");
					modeloSolicitudes.addColumn("Tipo de Solicitud");
					
					tblSolicitudes.setModel(modeloSolicitudes);
					tblSolicitudes.setBounds(33, 43, 323, 52);
					tblSolicitudes.setPreferredSize(new java.awt.Dimension(344, 84));
					
					}
				}
				{
				
					
				}
			}
			{
				
				modeloDestino = new DefaultComboBoxModel();
				cmbDestino = new JComboBox();
			
				getContentPane().add(cmbDestino);
				//cmbDestino.setModel(modeloDestino);
				
				cmbDestino.setBounds(33, 232, 217, 23);
			}
			{
				lblDestino = new JLabel();
				getContentPane().add(lblDestino);
				lblDestino.setText("Destino [*]");
				lblDestino.setBounds(33, 204, 156, 16);
			}
			{
				txtAsunto = new JTextField();
				getContentPane().add(txtAsunto);
				txtAsunto.setBounds(33, 169, 381, 23);
			}
			{
				lblAsunto = new JLabel();
				getContentPane().add(lblAsunto);
				lblAsunto.setText("Asunto [*]");
				lblAsunto.setBounds(33, 141, 194, 16);
			}
			{
				lblSolicitudes = new JLabel();
				getContentPane().add(lblSolicitudes);
				lblSolicitudes.setText("Solicitudes Pendientes");
				lblSolicitudes.setBounds(33, 12, 203, 14);
			}

			{
				modeloTemp.addColumn("codigo");
				modeloTemp.addColumn("denominacion");
			}
			pack();
			this.setSize(454, 353);
		} catch (Exception e) {
		    //add your error handling code here
			e.printStackTrace();
		}
	}
	
	private void btnCancelarActionPerformed(ActionEvent evt) {
		this.dispose();
		padre.setVisible(true);
	}
	
	private void btnAceptarActionPerformed(ActionEvent evt) {
		
		int fila=tblSolicitudes.getSelectedRow();
		if (fila!=-1){
			int destino=cmbDestino.getSelectedIndex();
			int cod_destino=Integer.parseInt(logica.getData(tblTemp, destino, 0).toString());
			int codigo=Integer.parseInt(logica.getData(tblSolicitudes, tblSolicitudes.getSelectedRow(),0).toString());
			
			if (!txtAsunto.getText().equals("")){
				
				int respuesta = JOptionPane.showConfirmDialog(null, "¿Confirma la registración?", "Registrar pase",
                        JOptionPane.YES_NO_OPTION);
				
				 //Confirmacion afirmativa, sino volvemos a la pantalla
				 if(respuesta==JOptionPane.YES_OPTION){
				if (logica.registrarPase(txtAsunto.getText(),cod_destino,codigo)){
					this.dispose();
					padre.setVisible(true);
				}
				 }
				
			}
			else
				JOptionPane.showMessageDialog(null,"Debe ingresar un asunto para completar la registración", "Error", JOptionPane.ERROR_MESSAGE);
			
		}
		else JOptionPane.showMessageDialog(null,"Debe seleccionar una solicitud", "Error", JOptionPane.ERROR_MESSAGE);
		
	}

}
